package com.cotasul.tela;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import com.cotasul.bean.CompradorBean;
import com.cotasul.bean.UsuarioBean;
import com.cotasul.negocio.CompradorServico;
import com.cotasul.negocio.UsuarioServico;
import com.cotasul.negocio.interfaces.IServicoGenerico;
import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

@ManagedBean
@ViewScoped
public class CompradorTela extends TelaAbstrata {

	private UsuarioBean usuario;

	private CompradorServico<CompradorBean> compradorServico;
	
	private UsuarioServico<UsuarioBean> usuarioServico;

	private List<CompradorBean> compradores;

	private CompradorBean comprador;

	public CompradorTela() {
		try {
			usuario = usuario == null ? (UsuarioBean) ((HttpSession) FacesContext
					.getCurrentInstance().getExternalContext()
					.getSession(false)).getAttribute("usuario")
					: usuario;
			comprador = new CompradorBean();
			comprador.setUsuario(usuario);
			compradorServico = new CompradorServico<CompradorBean>();
			usuarioServico = new UsuarioServico<UsuarioBean>();
			compradores = new ArrayList<CompradorBean>();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void filtraCompradores() {

		try {
			compradores = compradorServico.filtraCompradores(comprador);
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void excluirComprador(Object o) {
		try {
			compradorServico.excluir((CompradorBean) o);
			compradores = compradorServico.filtraCompradores(comprador);
		} catch (MySQLIntegrityConstraintViolationException e) {

			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					this.getServico().getValor("msg_header_erro"), this
							.getServico().getValor(
									"msg_erro_comprador_exclui_1"));
			FacesContext.getCurrentInstance().addMessage(null, msg);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void alterarBloqueio(CompradorBean o){
		try{
			this.usuarioServico.alterarBloqueio(o.getUsuario());
			filtraCompradores();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public void aprovaComprador(Object o) {
		try {
			compradorServico.aprovaComprador((CompradorBean) o);
			compradores = compradorServico.filtraCompradores(comprador);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("rawtypes")
	@Override
	protected IServicoGenerico getServico() {
		return this.compradorServico;
	}

	public CompradorServico<CompradorBean> getCompradorServico() {
		return compradorServico;
	}

	public void setCompradorServico(
			CompradorServico<CompradorBean> compradorServico) {
		this.compradorServico = compradorServico;
	}

	public List<CompradorBean> getCompradores() {
		return compradores;
	}

	public void setCompradores(List<CompradorBean> compradores) {
		this.compradores = compradores;
	}

	public CompradorBean getComprador() {
		return comprador;
	}

	public void setComprador(CompradorBean comprador) {
		this.comprador = comprador;
	}

	public UsuarioBean getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioBean usuario) {
		this.usuario = usuario;
	}
}
